﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Axe
{
    /// <summary>
    /// Интерфейс, обеспечивающий проверку логической целостности объекта
    /// </summary>
    public interface IIntegrityCheck
    {
        /// <summary>
        /// Осуществляет проверку логической целостности объекта
        /// </summary>
        /// <returns>true, если внутренне состояние объекта согласовано, иначе - false.</returns>
        bool CheckIntegrity();
    }

    /// <summary>
    /// Интерфейс, обеспечивающий проверку логической целостности объекта
    /// </summary>
    public interface IIntegrityCheckExt : IIntegrityCheck
    {

        /// <summary>
        /// Осуществляет проверку логической целостности объекта
        /// </summary>
        /// <param name="failureMessage">Текстовое описание причины несолгасованности</param>
        /// <returns>true, если внутренне состояние объекта согласовано, иначе - false.</returns>
        bool CheckIntegrity(out string failureMessage);
    }

}
